package com.gqz.equip.api;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gqz.common.core.domain.R;
import com.gqz.common.core.domain.RequestForm;
import com.gqz.equip.vo.*;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.*;

import java.util.List;


/**
 * 能源-盘点任务
 *
 * @author gqz20
 * @date 2023/02/25
 */
@RequestMapping("/t-en-stock-task")
public interface TEnStockTaskApi {

    @PostMapping("/{id}")
    public R<List<EnStockTaskVo>> getById(
            @PathVariable("id") String id);

    @PostMapping("/getByTaskNo/{taskNo}")
    public R<List<EnStockTaskVo>> getByTaskNo(
            @PathVariable("taskNo") String taskNo);

    @PostMapping("/page")
    public R<Page<EnStockTaskVo>> page(
            @RequestBody RequestForm<EnStockTaskVo> requestForm);


    @PostMapping("/count")
    public R<Long> count(
            @RequestBody RequestForm<EnStockTaskVo> requestForm);

    @PostMapping("/insert")
    public R<Integer> insert(
            @RequestBody List<EnStockTaskVo> vos);

    @PostMapping("/update")
    public R<Integer> update(
            @RequestBody List<EnStockTaskVo> vos);

    /**
     * 根据任务编号查询设备列表
     *
     * @param taskNo 任务编号
     * @return {@link R}<{@link List}<{@link EnStockTaskEquipVo}>>
     */
    @PostMapping("/getTaskEquipList/{taskNo}")
    public R<List<EnStockTaskEquipVo>> getTaskEquipList(
            @PathVariable("taskNo") String taskNo);

    /**
     * 弹窗分页查询设备
     *
     * @param requestForm 申请表
     * @return {@link R}<{@link Page}<{@link TEnStockEquipVo}>>
     */
    @PostMapping("/getEquipPage")
    public R<Page<TEnStockEquipVo>> getEquipPage(
            @RequestBody RequestForm<TEnWzEquipVo> requestForm);

    /**
     * 根据任务编码获取操作流程
     *
     * @param taskNo 任务编号
     * @return {@link R}<{@link TEnStockTaskProcessVo}>
     */
    @PostMapping("/getTaskProcess/{taskNo}")
    public R<TEnStockTaskProcessVo> getTaskProcess(
            @PathVariable("taskNo") String taskNo);

    /**
     * 工单管理分页
     *
     * @param requestForm 申请表
     * @return {@link R}<{@link Page}<{@link EnStockTaskVo}>>
     */
    @PostMapping("/getOrderPage")
    public R<Page<EnStockTaskVo>> getOrderPage(
            @RequestBody RequestForm<EnStockTaskVo> requestForm);

    /**
     * 详情列表分页
     *
     * @param requestForm 申请表
     * @return {@link R}<{@link Page}<{@link EnStockTaskDetailVo}>>
     */
    @PostMapping("/getTaskDetailPage")
    public R<Page<EnStockTaskDetailVo>> getTaskDetailPage(
            @RequestBody RequestForm<EnStockTaskDetailVo> requestForm);

    /**
     * 工单管理派单
     *
     * @param vo
     * @return {@link R}<{@link Integer}>
     */
    @PostMapping("/sendOrder")
    public R<Integer> sendOrder(
            @RequestBody EnStockTaskVo vo);

    /**
     * 获取任务缺陷列表
     * 根据任务编号查询缺陷隐患列表
     *
     * @param taskNo 任务编号
     * @return {@link R}<{@link List}<{@link EnStockEquipDefectVo}>>
     */
    @PostMapping("/getTaskDefectList/{taskNo}")
    public R<List<EnStockEquipDefectVo>> getTaskDefectList(
            @PathVariable("taskNo") String taskNo);

    /**
     * 获取任务编号
     *
     * @return {@link R}<{@link Object}>
     */
    @PostMapping("/getTaskNo")
    public R<Object> getTaskNo();

    /**
     * 盘点设备统计
     *
     * @param taskNo 任务编号
     * @return {@link R}<{@link List}<{@link StockEquipStatisticsVo}>>
     */
    @PostMapping("/getEquipStatisticsByTaskNo/{taskNo}")
    public R<List<StockEquipStatisticsVo>> getEquipStatisticsByTaskNo(
            @PathVariable("taskNo") String taskNo);

    /**
     * 分页查询设备列表根据任务编号
     *
     * @param requestForm 申请表
     * @return {@link R}<{@link Page}<{@link EnStockTaskEquipVo}>>
     */
    @PostMapping("/getTaskEquipListPage")
    public R<Page<EnStockTaskEquipVo>> getTaskEquipListPage(
            @RequestBody RequestForm<StockEquipStatisticsVo> requestForm);

    /**
     * 导出excel
     *
     * @param response    回答
     * @param requestForm 申请表
     */
    @PostMapping("/export/excel")
    public void exportExcel(
            HttpServletResponse response,
            @RequestBody RequestForm<EnStockTaskDetailVo> requestForm);


    /**
     * 获取坐标,energyPtgis
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param yhid      yhid公司
     * @return {@link List}<{@link EnStockGisVo}>
     */
    @PostMapping("/energyPtgis")
    public List<EnStockGisVo> energyPtgis(
            @RequestParam("startTime") String startTime,
            @RequestParam("endTime") String endTime,
            @RequestParam("yhid") String yhid);

}
